﻿@using DatabaseLibrary;
@* Quitar esta sección si se utilizan agrupaciones *@
@section Scripts {
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
}

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "Modificar empresa";

    var nit = string.Empty;
    var nombre = string.Empty;
    var direccion = string.Empty;
    var Cbo_estado = string.Empty;
    bool Val_estado = false;
    bool Val_nit = false;    

    Validation.Add("nit", Validator.StringLength(maxLength: 15, errorMessage: "El texto supera el maximo permitido de 15 caracteres."));
    Validation.Add("nombre", Validator.StringLength(maxLength: 100, errorMessage: "El texto supera el maximo permitido de 100 caracteres."));
    Validation.Add("direccion", Validator.StringLength(maxLength: 100, errorMessage: "El texto supera el maximo permitido de 100 caracteres."));

    Validation.Add("nit", Validator.Integer("Este campo debe contener solo numeros."));   
    
    // Implementacion de seguridad
    WebSecurity.RequireAuthenticatedUser();

    if (!string.IsNullOrEmpty(Request.QueryString["id"]))
    {
        Session["idEmpresa"] = Request.QueryString["id"];
    }
    else
    {
        Response.Redirect("listarEmpresa.cshtml");
    }

    if (IsPost)
    {
        nit = Request.Form["nit"];
        nombre = Request.Form["nombre"];
        direccion = Request.Form["direccion"];
        Cbo_estado = Request.Form["Cbo_estado"];

        if (nit.IsEmpty())
        {
            ModelState.AddError("nit", "El campo nit no debe estar vacio.");
        }

        if (nombre.IsEmpty())
        {
            ModelState.AddError("nombre", "El campo nombre no debe estar vacio.");
        }

        if (direccion.IsEmpty())
        {
            ModelState.AddError("direccion", "El campo direccion no debe estar vacio.");
        }

        if (Cbo_estado.IsEmpty() || Cbo_estado.ToString().Trim() == "0")
        {
            ModelState.AddError("Cbo_estado", "Seleccione el estado para grupo electoral");
        }


        if (Validation.IsValid())
        {
            if (Cbo_estado == "1")
            {
                Val_estado = true;
            }

            if (Session["nit_empresa"].ToString().Trim() != nit)
            {
                Empresa Obj_empresa = new Empresa();
                Obj_empresa.Objempresa.nit_empresa = nit;


                var lista = Obj_empresa.consultar(1);

                if (lista.Count > 0)
                {
                    Val_nit = true;
                }

                Obj_empresa.Objempresa.estado = true;
                lista = Obj_empresa.consultar(1);

                if (lista.Count > 0)
                {
                    Val_nit = true;
                }
                
                lista = null;
            }
                                        
            if (!Val_nit)
            {
                ServicioGenerico<empresa> servicio = new ServicioGenerico<empresa>();
                servicio.entidad.id_empresa = int.Parse(Session["idEmpresa"].ToString());
                servicio.entidad.nit_empresa = nit;
                servicio.entidad.nombre = nombre;
                servicio.entidad.direccion = direccion;
                servicio.entidad.estado = Val_estado;

                EstadoTransaccion resultado = servicio.actualizar();

                if (EstadoTransaccion.ERRONEO.Equals(resultado))
                {
                    ModelState.AddError("errorGeneral", servicio.mensaje);
                }
                else
                {
                    ModelState.AddError("errorGeneral", servicio.mensaje);
                    Response.Redirect("listarEmpresa.cshtml");
                }                
            }
            else
            {
                ModelState.AddError("errorGeneral", "Ya existe una empresa con el nit " + nit);
            }                            
        }       
    }
    else
    {
        ServicioGenerico<empresa> servicioListar = new ServicioGenerico<empresa>();
        servicioListar.entidad.id_empresa = int.Parse(Session["idEmpresa"].ToString());
        servicioListar.entidad.estado = true;

        empresa objEmpresa = new empresa();
        //objEmpresa = servicioListar.filtrar()[0];
        var lista = servicioListar.filtrar();

        if (lista.Count == 0)
        {
            servicioListar.entidad.estado = false;
            lista = servicioListar.filtrar();
        }

        if (lista.Count > 0)
        {
            nit = lista[0].nit_empresa;
            Session["nit_empresa"] = nit;
            nombre = lista[0].nombre;
            direccion = lista[0].direccion;
            Val_estado = lista[0].estado;            
        }
    }
    }

@if (!User.IsInRole("Admin"))
{
    ModelState.AddError("errorGeneral", "El usuario: " + User.Identity.Name + " NO tiene permisos sobre este formulario.");
    @Html.ValidationMessage("errorGeneral")
}
else
{
    <form method="post">
        @AntiForgery.GetHtml()
        <fieldset>
            <legend>Formulario de registro</legend>
            <ol>
                <li class="email">
                    <label for="nit" @if (!ModelState.IsValidField("nit"))
                                     {<text>class="error-label"</text>}>
                        Nit de la empresa</label>
                    <input type="text" id="nit" name="nit" maxlength="15" value="@nit" @Validation.For("nit")/>
                    @Html.ValidationMessage("nit")
                </li>
                <li class="email">
                    <label for="nombre" @if (!ModelState.IsValidField("nombre"))
                                        {<text>class="error-label"</text>}>
                        Nombre de la empresa</label>
                    <input type="text" id="nombre" name="nombre" maxlength="100" value="@nombre" @Validation.For("nombre")/>
                    @Html.ValidationMessage("nombre")
                </li>
                <li class="email">
                    <label for="direccion" @if (!ModelState.IsValidField("direccion"))
                                           {<text>class="error-label"</text>}>
                        Direccion de la empresa</label>
                    <input type="text" id="direccion" name="direccion" maxlength="15" value="@direccion"  @Validation.For("direccion")/>
                    @Html.ValidationMessage("direccion")
                </li>
                <li class="email">
                    <label for="Cbo_estado" @if (!ModelState.IsValidField("Cbo_estado"))
                                            {<text>class="error-label"</text>}>
                        estado</label>
                    <select id="Cbo_estado" name="Cbo_estado" @Validation.For("Cbo_estado")>
                        <option value="0">Seleccione</option>
                        @if (Val_estado == true)
                        {
                            <option value="1" selected="selected">Activo</option>
                            <option value="-1">Inactivo</option>
                        }
                        else
                        {
                            <option value="1">Activo</option>
                            <option value="-1" selected="selected">Inactivo</option>
                        }
                    </select>

                    @Html.ValidationMessage("Cbo_estado")
                </li>
                <li>
                    @Html.ValidationMessage("errorGeneral")
                </li>
            </ol>
            <input type="submit" value="Actualizar" />
        </fieldset>
    </form>
}



